spinbutton: Connect swipe gesture to the text entry
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 8 Jun 2021 13:06:29 +0000 (15:06 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 8 Jun 2021 13:17:56 +0000 (15:17 +0200)
In the GTK3 days, the spin button was an entry, with buttons on
top, and the swipe gesture affected the input on the entry bits.
Now the spin button is a container, so this gesture in the capture
phase applies to all contained children (incl. buttons).

Attach this gesture to the entry itself, so the buttons are left
outside this business. The gesture is still in the capture phase
in order to prevent text selection/edition/etc to happen.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4008
gtk/gtkspinbutton.c

index f54b8a7eb63690b4059a841acc5748ee0ae6ad49..303a080e7275dfe9231dc015f1c844ac452a509d 100644 (file)
@@ -1075,7 +1075,8 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
                     G_CALLBACK (swipe_gesture_begin), spin_button);
   g_signal_connect (gesture, "update",
                     G_CALLBACK (swipe_gesture_update), spin_button);
-  gtk_widget_add_controller (GTK_WIDGET (spin_button), GTK_EVENT_CONTROLLER (gesture));
+  gtk_widget_add_controller (GTK_WIDGET (spin_button->entry),
+                             GTK_EVENT_CONTROLLER (gesture));
 
   controller = gtk_event_controller_scroll_new (GTK_EVENT_CONTROLLER_SCROLL_VERTICAL |
                                                GTK_EVENT_CONTROLLER_SCROLL_DISCRETE);